﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Unimaq.Macroprocesos.LogicaNegocio;

namespace MacroprocesosWinForms.Administrador.ControlUsuario.Opciones
{
    public partial class OPC00001_CodigoProceso : UserControl
    {
        Unimaq.Macroprocesos.AccesoDatos.TipoProceso selTipoProceso;

        public OPC00001_CodigoProceso()
        {
            InitializeComponent();

            selTipoProceso = new Unimaq.Macroprocesos.AccesoDatos.TipoProceso();
        }

        private void OPC00001_CodigoProceso_Load(object sender, EventArgs e)
        {
            //cargamos el tipoProceso actual
            this.CargarTipoProceso();
        }

        private void CargarTipoProceso()
        {
            TipoProcesoBLL tipoProcesoBLL = new TipoProcesoBLL();
            selTipoProceso = tipoProcesoBLL.GetCodigoProceso();

            if (selTipoProceso != null)
            {
                txtTipoProceso.Text = selTipoProceso.Codigo;
            }
        }

        private void btnAplicar_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Esta operación actualizará los códigos de los proceso.\n¿Esta seguro de que quiere continuar?", "Macroprocesos - UNIMAQ", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                int valueResult = 0;
                //actualiza el TipoProceso actual
                Unimaq.Macroprocesos.AccesoDatos.TipoProceso nuevoTipoProceso =
                    new Unimaq.Macroprocesos.AccesoDatos.TipoProceso()
                    {
                        Codigo = txtTipoProceso.Text.Trim()
                    };

                TipoProcesoBLL tipoProcesoBLL = new TipoProcesoBLL();
                valueResult += tipoProcesoBLL.Actualizar(
                    new Unimaq.Macroprocesos.AccesoDatos.TipoProceso() { Id = selTipoProceso.Id },
                    nuevoTipoProceso);

                //cargamos nuevamente el tipoProceso
                this.CargarTipoProceso();

                if (valueResult > 0)
                {
                    //actualiza los códigos del proceso
                    ProcesoBLL procesoBLL = new ProcesoBLL();
                    valueResult += procesoBLL.ActualizarCodigosProceso(selTipoProceso);

                    if (valueResult > 0)
                    {
                        MessageBox.Show("Los procesos fueron actualizados correctamente", "Macroprocesos - UNIMAQ", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        ActualizarArbol();
                    }
                    else
                    {
                        MessageBox.Show("Error al actualizar los procesos", "Macroprocesos - UNIMAQ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                    }
                }
                else
                {
                    MessageBox.Show("Error al actualizar el tipo de proceso", "Macroprocesos - UNIMAQ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void ActualizarArbol()
        {
            PrincipalAdministrador iuPrincipalAdministrador = this.ParentForm as PrincipalAdministrador;
            iuPrincipalAdministrador.CargarArbolProcesos();
        }
    }
}
